package com.kettle.service.quart;


import java.util.Map;

import org.quartz.SchedulerException;
import com.kettle.model.quartz.ReturnResult;
import com.kettle.model.rowpage.PageResult;

/**
 * 定时任务 Service
 */
public interface QuartzService {
    /**
     * addJob(方法描述：添加一个定时任务) <br />
     * (方法适用条件描述： – 可选)
     * 
     * @param jobName
     *            作业名称
     * @param jobGroupName
     *            作业组名称
     * @param triggerName
     *            触发器名称
     * @param triggerGroupName
     *            触发器组名称
     * @param cls
     *            定时任务的class
     * @param cron
     *            时间表达式 void
     * @return 
     * @exception @since
     *                1.0.0
     */
     ReturnResult addJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName, Class cls, String cron);
    /**
     * 
     * @param oldjobName
     *            原job name
     * @param oldjobGroup
     *            原job group
     * @param oldtriggerName
     *            原 trigger name
     * @param oldtriggerGroup
     *            原 trigger group
     * @param jobName
     * @param jobGroup
     * @param triggerName
     * @param triggerGroup
     * @param cron
     */
     ReturnResult modifyJobTime(String oldjobName, String oldjobGroup, String oldtriggerName, String oldtriggerGroup, String jobName, String jobGroup, String triggerName, String triggerGroup, String cron);

    /**
     * 修改触发器调度时间
     * 
     * @param triggerName
     *            触发器名称
     * @param triggerGroupName
     *            触发器组名称
     * @param cron
     *            cron表达式
     * @return 
     */
     ReturnResult modifyJobTime(String triggerName, String triggerGroupName, String cron);

    /**
     * 暂停指定的任务
     * 
     * @param jobName
     *            任务名称
     * @param jobGroupName
     *            任务组名称
     * @return
     */
     ReturnResult pauseJob(String jobName, String jobGroupName);

    /**
     * 恢复指定的任务
     * 
     * @param jobName
     *            任务名称
     * @param jobGroupName
     *            任务组名称
     * @return
     */
     ReturnResult resumeJob(String jobName, String jobGroupName);

    /**
     * 删除指定组任务
     * 
     * @param jobName
     *            作业名称
     * @param jobGroupName
     *            作业组名称
     * @param triggerName
     *            触发器名称
     * @param triggerGroupName
     *            触发器组名称
     * @return 
     */
     ReturnResult removeJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName);

    /**
     * 开始所有定时任务。启动调度器
     * @return 
     */
     ReturnResult startSchedule();

    /**
     * 关闭调度器
     * @return 
     */
     ReturnResult shutdownSchedule();
     /**
      * 查询任务列表
      * @return
      * @throws SchedulerException
      */
	 PageResult getSchedulerJobInfo() throws SchedulerException;
	/**
	 * 添加立即执行
	 */
	void addOnceJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName, Class cls,
			Map<String, Object> parameter);
}
